home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1999-02-21 | 29.4 KB | 1,220 lines
/* * 25.11.98 * * Posortowane pozycje w Add FileID - dodatkowa lista fidtemp z niesortowana * lista w ktorej szukam numerka. * Poprawiona geticon - teraz xDEFxxx = defnode a reszta = dtnode * Dodane blokowanie gîównego okna w kaûdej sytuacji * Dodane sprawdzanie czy jest juû taka pozycja * * 26.01.99 * * Przekompilowane z nowâ wersjâ dclistview - dodane poruszanie sië po listach * via Up/Down i ALT-Up/ALT-Down * * 20.02.99 * * Zmieniona procka getfile() : * file_feq() -> filename := file_req() * W PROC geticon() zmienione sprawdzanie SHOWINFO - teraz dziaîa takûe na (SHOWINFO) * */ OPT OSVERSION=37,PREPROCESS,LARGE ->#define DEBUG MODULE 'tools/EasyGUI', 'tools/exceptions', 'libraries/gadtools', 'fileid', 'intuition/intuition', 'intuition/screens', 'exec/nodes', 'exec/lists', 'icon', 'dos/var', 'asl', 'libraries/asl', 'workbench/workbench', 'utility/tagitem', 'easyplugins/register', 'easyplugins/dclistview', 'afc/stringnode', 'afc/dirlist', '*rawkey' /* PROC ..Definicje */ ENUM PAGE_FILEID,PAGE_EXT,PAGE_DEF,PAGE_DT ENUM ERR_NONE,ERR_NO_ASL,ERR_ALLOC,ERR_MAKE,ERR_QUIT, ERR_NO_UTILLIB,ERR_NO_FILEID,ERR_NO_ICONLIB DEF gh : PTR TO guihandle, -> Gîówne okno ghadd : PTR TO guihandle, -> Extensions Add reg : PTR TO register_plugin, req : PTR TO filerequester, fidlist : PTR TO dclistview, -> config deflist : PTR TO dclistview, -> defaultowe extlist : PTR TO dclistview, -> extensions dtlist : PTR TO dclistview, -> datatypy newicon : PTR TO stringnode, -> tooltypy NI fidnode : PTR TO stringnode, -> FileID typy fidsel : PTR TO stringnode, -> FileID Add - sortowane fidtemp : PTR TO stringnode, -> FileID Add - pomocnicza extnode : PTR TO stringnode, -> rozszerzenia defnode : PTR TO stringnode, -> defaultowe defsel : PTR TO stringnode, -> defaultowe Add dtnode : PTR TO stringnode, -> datatypy dtsel : PTR TO dirlist, -> datatypy add rawkey : PTR TO rawkey DEF guilist : PTR TO LONG, -> GUI glowne - DO zakladek cmdstr [256] : STRING, txtstr [256] : STRING, filename[256] : STRING, iconname[256] : STRING, nochanged = TRUE, showinfo = TRUE, isnitt = FALSE, aslok = NIL, actgui = PAGE_FILEID, current = -1, temp -> Gadgety DEF listgad1, listgad2, listgad3, listgad4, strgad1, strgad2, strgad3, strgad4, delgad1, delgad2, delgad3, delgad4, txtgad1, txtgad3, savgad1, savgad2, savgad3, savgad4, getgad1, getgad2, getgad3, getgad4, datgad1, datgad2, datgad3, datgad4, extstr #ifdef DEBUG DEF str[256] : STRING #endif /* ENDPROC */ PROC main() HANDLE DEF res, top, scr : PTR TO screen VOID '$VER: MultiView 4.8 (20.02.1999) BLABLA PRODUCT' setup() scr := LockPubScreen(NIL) guilist := [ [ROWS, [PLUGIN,{gad_tabs},reg], [PLUGIN,NIL,rawkey], [ROWS, listgad1 := [DCLIST,{gad_listv},fidlist,TRUE], txtgad1 := [TEXT,txtstr,'Type : ',TRUE,10], [COLS, [SBUTTON,{gad_add_fileid},'_Add',NIL,"a"], delgad1 := [SBUTTON,{gad_del},'_Del',PAGE_FILEID,"d",NIL,TRUE] ], [BAR], [COLS, strgad1 := [STR,{gad_str},'_Command :',cmdstr,255,4,FALSE,PAGE_FILEID,"c",NIL,FALSE], datgad1 := [BUTTON,{gad_datatype},'DT',PAGE_FILEID,NIL,NIL,FALSE], getgad1 := [BUTTON,{gad_getfile},'_Get...',PAGE_FILEID,"g",NIL,FALSE] ], [BAR], [EQCOLS, savgad1 := [SBUTTON,{gad_save},'_Save',NIL,"s",NIL,TRUE], [SBUTTON,{gad_quit},'_Quit',NIL,"q"] ] ] ], [ROWS, [PLUGIN,{gad_tabs},reg], [PLUGIN,NIL,rawkey], [ROWS, listgad2 := [DCLIST,{gad_listv},extlist,TRUE], [COLS, [SBUTTON,{gad_add_ext},'_Add',NIL,"a"], delgad2 := [SBUTTON,{gad_del},'_Del',PAGE_EXT,"d",NIL,TRUE] ], [BAR], [COLS, strgad2 := [STR,{gad_str},'_Command :',cmdstr,255,4,FALSE,PAGE_EXT,"c",NIL,FALSE], datgad2 := [BUTTON,{gad_datatype},'DT',PAGE_EXT,NIL,NIL,FALSE], getgad2 := [BUTTON,{gad_getfile},'_Get...',PAGE_EXT,"g",NIL,FALSE] ], [BAR], [EQCOLS, savgad2 := [SBUTTON,{gad_save},'_Save',NIL,"s",NIL,TRUE], [SBUTTON,{gad_quit},'_Quit',NIL,"q"] ] ] ], [ROWS, [PLUGIN,{gad_tabs},reg], [PLUGIN,NIL,rawkey], [ROWS, listgad3 := [DCLIST,{gad_listv},deflist,TRUE], txtgad3 := [TEXT,txtstr,'Type : ',TRUE,10], [COLS, [SBUTTON,{gad_add_def},'_Add',NIL,"a"], delgad3 := [SBUTTON,{gad_del},'_Del',PAGE_DEF,"d",NIL,TRUE] ], [BAR], [COLS, strgad3 := [STR,{gad_str},'_Command :',cmdstr,255,4,FALSE,PAGE_DEF,"c",NIL,FALSE], datgad3 := [BUTTON,{gad_datatype},'DT',PAGE_DEF,NIL,NIL,FALSE], getgad3 := [BUTTON,{gad_getfile},'_Get...',PAGE_DEF,"g",NIL,FALSE] ], [BAR], [EQCOLS, savgad3 := [SBUTTON,{gad_save},'_Save',NIL,"s",NIL,TRUE], [SBUTTON,{gad_quit},'_Quit',NIL,"q"] ] ] ], [ROWS, [PLUGIN,{gad_tabs},reg], [PLUGIN,NIL,rawkey], [ROWS, listgad4 := [DCLIST,{gad_listv},dtlist,TRUE], [COLS, [SBUTTON,{gad_add_dt},'_Add',NIL,"a"], delgad4 := [SBUTTON,{gad_del},'_Del',PAGE_DT,"d",NIL,TRUE] ], [BAR], [COLS, strgad4 := [STR,{gad_str},'_Command :',cmdstr,255,4,FALSE,PAGE_DT,"c",NIL,FALSE], datgad4 := [BUTTON,{gad_datatype},'DT',PAGE_DT,NIL,NIL,FALSE], getgad4 := [BUTTON,{gad_getfile},'_Get...',PAGE_DEF,"g",NIL,FALSE] ], [BAR], [EQCOLS, savgad4 := [SBUTTON,{gad_save},'_Save',NIL,"s",NIL,TRUE], [SBUTTON,{gad_quit},'_Quit',NIL,"q"] ] ] ] ] res := CHECKIT IF showinfo THEN res := res + CHECKED guiinitA('MultiView Preferences',guilist[],[EG_GHVAR,{gh}, EG_CLOSE,{gad_quit}, EG_LEFT,0, EG_TOP,scr.barheight + 1, EG_MENU, [NM_TITLE,0,'Project', 0 ,0,0,0, NM_ITEM, 0,'Open...', 'o',aslok,0,{men_open}, NM_ITEM, 0,'Save', 's',0,0,{gad_save}, NM_ITEM, 0,'Save As...','S',aslok,0,{men_saveas}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'About', '?',0,0,{about}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Quit', 'q',0,0,{gad_quit}, NM_TITLE,0,'Settings', 0 ,0,0,0, NM_ITEM, 0,'Show Info', 'i',res,0,{men_info}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Sort lists','t',0,0,{men_sort}, NM_END, 0,0, 0,0,0,0]:newmenu,NIL ] ) SetWindowTitles(gh.wnd,'MultiView Preferences','MultiView Preferences 4.8 (20.02.1999) by Szczepan/BlaBla -> BLABLA PRODUCT') IF aslok = 16 THEN setdisabled(gh,getgad1,TRUE) nodel() res := -1 WHILE res < 0 Wait(gh.sig) res := guimessage(gh) ENDWHILE EXCEPT DO cleangui(gh) exit() IF scr THEN UnlockPubScreen(NIL,scr) IF exception SELECT exception CASE ERR_NO_UTILLIB WriteF('Error : Cannot open utility.library !!!\n') CASE ERR_NO_FILEID WriteF('Error : Cannot open FileID.library !!!\n') CASE ERR_NO_ICONLIB WriteF('Error : Cannot open icon.library !!!\n') CASE ERR_QUIT CleanUp(NIL) DEFAULT WriteF('Error : \d\n',exception) ENDSELECT ENDIF ENDPROC PROC about() DEF ok blockwin(gh) ok := EasyRequestArgs(NIL,[20,NIL,'MultiView Preferences', 'MultiView Preferences 4.8 (20.02.99)\nby Szczepan/BlaBla.\n\nThis is BLABLA PRODUCT !\n(see docs FOR more info)\n\nThis program is GiftWare\n\nBugreports are very welcome.\n\nE-mail : szczepan@student.man.bialystok.pl\nWWW : http://student.man.bialystok.pl/szczepan/','Ok|More Info'],NIL,NIL) IF ok = 0 THEN EasyRequestArgs(NIL,[20,NIL,'MultiView Preferences','Used modules :\n\n EasyGUI AND plugins : \n\n DCListview PLUGIN by Victor Ducedre\n Register PLUGIN by Ralph Wermke\n RawKey PLUGIN by Fabio Rotondo\n\n AFC classes : \n\n StringNode AND DirList by Fabio Rotondo\n \n Source size : 30135b','Ok'],NIL,NIL) unblockwin(gh) ENDPROC PROC setup() req := NIL IF (utilitybase := OpenLibrary('utility.library',37)) = NIL THEN Raise(ERR_NO_UTILLIB) IF (iconbase := OpenLibrary('icon.library' ,37)) = NIL THEN Raise(ERR_NO_ICONLIB) IF (fileidbase := OpenLibrary('FileID.library' ,2 )) = NIL THEN Raise(ERR_NO_FILEID) IF aslbase := OpenLibrary('asl.library',37) aslok := NIL req := AllocAslRequest(ASL_FILEREQUEST, [ASL_HAIL,'Select File...', NIL]) ELSE aslok := 16 ENDIF NEW reg.register([PLA_Register_Titles,['FileID types','Extensions','DEFAULT Actions','Datatypes'],NIL]) NEW fidnode.stringnode() NEW fidsel.stringnode() NEW newicon.stringnode() NEW defnode.stringnode() NEW extnode.stringnode() NEW defsel.stringnode() NEW dtnode.stringnode() NEW dtsel.dirlist() NEW fidtemp.stringnode() StrCopy(iconname,'SYS:Utilities/MultiView') geticon(iconname) StrCopy(cmdstr,'') NEW fidlist.dclistview([DCLV_LABEL,'Your Configuration', DCLV_USEARROWS,TRUE, DCLV_RELX,40, DCLV_RELY,10, DCLV_LIST,fidnode.addr(), DCLV_CURRENT,-1,NIL,NIL]) NEW extlist.dclistview([DCLV_LABEL,'Extensions defined', DCLV_USEARROWS,TRUE, DCLV_RELX,40, DCLV_RELY,10, DCLV_LIST,extnode.addr(), DCLV_CURRENT,-1,NIL,NIL]) NEW deflist.dclistview([DCLV_LABEL,'Default Actions', DCLV_USEARROWS,TRUE, DCLV_RELX,40, DCLV_RELY,10, DCLV_LIST,defnode.addr(), DCLV_CURRENT,-1,NIL,NIL]) NEW dtlist.dclistview([DCLV_LABEL,'Datatypes', DCLV_USEARROWS,TRUE, DCLV_RELX,40, DCLV_RELY,10, DCLV_LIST,dtnode.addr(), DCLV_CURRENT,-1,NIL,NIL]) NEW rawkey.init() rawkey.setattrs([PLA_KEY_LEFT,{key_left}, PLA_KEY_RIGHT,{key_right}, NIL, NIL]) ENDPROC PROC exit() END fidtemp END reg END fidlist END fidnode END fidsel END newicon END defnode END extnode END deflist END extlist END defsel END rawkey END dtlist END dtnode IF req THEN FreeAslRequest(req) IF aslbase THEN CloseLibrary(aslbase) IF iconbase THEN CloseLibrary(iconbase) IF fileidbase THEN CloseLibrary(fileidbase) IF utilitybase THEN CloseLibrary(utilitybase) ENDPROC PROC gad_add_dt() -> Dodaj DataType blockwin(gh) IF dtsel.numitems() = NIL dtsel.setdir('DEVS:Datatypes') dtsel.read(FALSE,TRUE,'~(#?.info)') dtsel.sort() ENDIF easyguiA('Select FileType', [LISTV,{gad_select_dt},'Available DataTypes',20,10,dtsel.addr(),FALSE,NIL,NIL] ) unblockwin(gh) ENDPROC PROC gad_add_ext() -> dodaj rozszerzenie / przedrostek DEF res = -1 blockwin(gh) StrCopy(cmdstr,'') guiinitA('Adding extensions', extstr:= [STR,{gad_str_ext},'_Add :',cmdstr,10,10,FALSE,NIL,"a",NIL,FALSE], [EG_GHVAR,{ghadd},NIL] ) ActivateGadget(findgadget(ghadd,extstr),ghadd.wnd,NIL) WHILE res < 0 Wait(ghadd.sig) res := guimessage(ghadd) ENDWHILE cleangui(ghadd) unblockwin(gh) ENDPROC PROC gad_add_def() -> dodaj DEF_xxx blockwin(gh) IF defsel.numitems() = NIL defsel.add('DEFAULT3= Default tool for OS 3.0+') defsel.add('DEFAULT= Default tool for OS 2.0+') defsel.add('DEF_EXE= Default tool for executable files') defsel.add('DEF_GFX= Default tool for graphics files') defsel.add('DEF_IFF= Default tool for IFF files') defsel.add('DEF_PACK= Default tool for packed files') defsel.add('DEF_TEXT= Default tool for text files') defsel.add('DEF_MUSIC= Default tool for music files') defsel.add('DEF_SCRIPT= Default tool for scripts') defsel.add('DEF_ENCRYPT= Default tool for crypted files') ENDIF easyguiA('Select defaults', [LISTV,{gad_select_def},'DEFAULT actions',37,10,defsel.addr(),FALSE,NIL,NIL] ) unblockwin(gh) ENDPROC PROC gad_add_fileid() -> dodaj FileID type blockwin(gh) IF fidsel.numitems() = NIL THEN getfileidlist() easyguiA('Select FileType', [LISTV,{gad_select_fileid},'Available FileTypes',37,10,fidsel.addr(),FALSE,NIL,NIL] ) StrCopy(cmdstr,'') unblockwin(gh) ENDPROC PROC gad_datatype() gad_str(NIL,actgui,NIL,'DATATYPE') ENDPROC PROC gad_del(kasuj,page,info) #ifdef DEBUG status('proc gad_del\n') #endif IF info > -1 THEN info := TRUE SELECT page CASE PAGE_FILEID gad_delete(savgad1,fidnode,fidlist,info) CASE PAGE_EXT gad_delete(savgad2,extnode,extlist,info) CASE PAGE_DEF gad_delete(savgad3,defnode,deflist,info) CASE PAGE_DT gad_delete(savgad4,dtnode,dtlist,info) ENDSELECT ENDPROC PROC gad_delete(savegad,node : PTR TO stringnode,dc : PTR TO dclistview,kasuj = TRUE) -> Odôwieûa Listview nochanged := FALSE setdisabled(gh,savegad,FALSE) current-- IF kasuj THEN node.del() nodel() dc.set(DCLV_CURRENT,-1) dc.set(DCLV_TOP,current) current := -1 ENDPROC PROC gad_getfile() filename := file_req(cmdstr) gad_str(NIL,actgui,NIL,filename) ENDPROC PROC gad_listv() DEF tmp[256] : STRING #ifdef DEBUG status('Procka gad_listv\n') #endif SELECT actgui CASE PAGE_FILEID gad_listview(fidnode,fidlist) show_idstr() MidStr(tmp,cmdstr,InStr(cmdstr,'=') + 1,ALL) setstr(gh,strgad1,tmp) setdisabled(gh,delgad1,FALSE) setdisabled(gh,strgad1,FALSE) setdisabled(gh,datgad1,FALSE) setdisabled(gh,getgad1,FALSE) IF aslok = 16 THEN setdisabled(gh,getgad1,TRUE) CASE PAGE_EXT gad_listview(extnode,extlist) MidStr(tmp,cmdstr,InStr(cmdstr,'=')+1,ALL) setstr(gh,strgad2,tmp) setdisabled(gh,delgad2,FALSE) setdisabled(gh,strgad2,FALSE) setdisabled(gh,datgad2,FALSE) setdisabled(gh,getgad2,FALSE) IF aslok = 16 THEN setdisabled(gh,getgad2,TRUE) CASE PAGE_DEF gad_listview(defnode,deflist) show_defstr() MidStr(tmp,cmdstr,InStr(cmdstr,'=')+1,ALL) setstr(gh,strgad3,tmp) setdisabled(gh,delgad3,FALSE) setdisabled(gh,strgad3,FALSE) setdisabled(gh,datgad3,FALSE) setdisabled(gh,getgad3,FALSE) IF aslok = 16 THEN setdisabled(gh,getgad3,TRUE) CASE PAGE_DT gad_listview(dtnode,dtlist) MidStr(tmp,cmdstr,InStr(cmdstr,'=')+1,ALL) setstr(gh,strgad4,tmp) setdisabled(gh,delgad4,FALSE) setdisabled(gh,strgad4,FALSE) setdisabled(gh,datgad4,FALSE) setdisabled(gh,getgad4,FALSE) IF aslok = 16 THEN setdisabled(gh,getgad4,TRUE) ENDSELECT ENDPROC PROC gad_listview(node : PTR TO stringnode,dc : PTR TO dclistview) current,temp := dc.get(DCLV_CURRENT) node.item(current) StrCopy(cmdstr,node.obj()) IF dc.get(DCLV_CLICK) clicked() nodel() RETURN ENDIF ENDPROC PROC gad_save() DEF dobj : PTR TO diskobject, success = FALSE, lista[700] : LIST, a = NIL, b blockwin(gh) #ifdef DEBUG status('\nprocka gad_save\n') StringF(str,'IconName -> \s\n',iconname) status(str) #endif IF dobj := GetDiskObjectNew(iconname) #ifdef DEBUG status('Saving config...\n') #endif IF showinfo = FALSE lista[a] := 'SHOWINFO=NO' a++ ENDIF defnode.first() FOR b := 0 TO defnode.numitems() - 1 defnode.item(b) lista[a] := defnode.obj() a++ ENDFOR fidnode.first() FOR b := 0 TO fidnode.numitems() - 1 fidnode.item(b) lista[a] := fidnode.obj() a++ ENDFOR extnode.first() FOR b := NIL TO extnode.numitems() - 1 extnode.item(b) lista[a] := extnode.obj() a++ ENDFOR dtnode.first() FOR b := NIL TO dtnode.numitems() - 1 dtnode.item(b) lista[a] := dtnode.obj() a++ ENDFOR IF isnitt FOR b := 0 TO newicon.numitems() - 1 newicon.item(b) lista[a] := newicon.obj() a++ #ifdef DEBUG StringF(str,'NI -> \s\n',lista[a+b]) status(str) #endif ENDFOR ENDIF lista[a] := NIL dobj.tooltypes := lista success := PutDiskObject(iconname,dobj) FreeDiskObject(dobj) nochanged := TRUE set_save() ENDIF unblockwin(gh) ENDPROC PROC gad_select_dt(a,b,c,d) DEF tmp1[256] : STRING dtsel.item(d) StringF(tmp1,'\s#?',dtsel.obj()) a := dtnode.search(tmp1,FALSE) StringF(tmp1,'\s=',dtsel.obj()) IF a = FALSE dtnode.add(tmp1) gad_delete(savgad4,dtnode,dtlist,FALSE) ENDIF ENDPROC PROC gad_select_def(a,b,c,d) -> dodawanie DEF_xxx - wybranie w oknie DEF tmp1[256] : STRING, tmp2[256] : STRING defsel.item(d) MidStr(tmp2,defsel.obj(),NIL,InStr(defsel.obj(),'=')+1) StringF(tmp1,'#?\s#?',tmp2) a := defnode.search(tmp1,FALSE) StringF(tmp1,'\s=',tmp2) IF a = FALSE defnode.add(tmp1) gad_delete(savgad3,defnode,deflist,FALSE) ENDIF ENDPROC PROC gad_select_fileid(a,b,c,d) DEF tmp1[256] : STRING, tmp2[256] : STRING fidsel.item(d) StrCopy(cmdstr,fidsel.obj()) StringF(tmp1,'#?\s',cmdstr) StrCopy(cmdstr,fidtemp.search(tmp1,FALSE)) MidStr(tmp1,cmdstr,NIL,InStr(cmdstr,'=') + 1) StringF(tmp2,'\s#?',tmp1) a := fidnode.search(tmp2,FALSE) IF a = FALSE fidnode.add(tmp1) gad_delete(savgad1,fidnode,fidlist,FALSE) ENDIF ENDPROC PROC gad_str(a,page,info,str) #ifdef DEBUG status('proc gad_str\n') #endif SELECT page CASE PAGE_FILEID wstawtext(str,fidnode,fidlist,savgad1) CASE PAGE_EXT wstawtext(str,extnode,extlist,savgad2) CASE PAGE_DEF wstawtext(str,defnode,deflist,savgad3) CASE PAGE_DT wstawtext(str,dtnode,dtlist,savgad4) ENDSELECT ENDPROC PROC gad_str_ext(a,b,c,str) DEF tmp1[256] : STRING StringF(tmp1,'\s=#?',str) a := extnode.search(tmp1,FALSE) IF a = FALSE StrAdd(str,'=') extnode.add(str) extlist.set(DCLV_CURRENT,-1) extlist.set(DCLV_LIST,extnode.addr()) setstr(ghadd,extstr,'') nochanged := FALSE set_save() ENDIF ENDPROC PROC gad_tabs(gh,reg : PTR TO register_plugin) changepage(reg.get(PLA_Register_ActivePage)) ENDPROC PROC gad_quit() DEF ok = 1 blockwin(gh) IF nochanged = FALSE THEN ok := EasyRequestArgs(NIL,[20,NIL,'MultiView Preferences','Changes not saved.\n Really quit ?','Quit|Save ^ Quit|Cancel'],NIL,NIL) SELECT ok CASE 2 gad_save() Raise(ERR_QUIT) CASE 1 Raise(ERR_QUIT) ENDSELECT unblockwin(gh) ENDPROC PROC geticon(projname) DEF tmp[256] : STRING, dobj : PTR TO diskobject, oldtooltypes[700] : LIST, mem, a, b #ifdef DEBUG status('\nproc geticon\n') StringF(str,'IconName -> \s\n',iconname) status(str) #endif IF fidnode.numitems() > NIL THEN fidnode.clear() IF newicon.numitems() > NIL THEN newicon.clear() IF defnode.numitems() > NIL THEN defnode.clear() IF extnode.numitems() > NIL THEN extnode.clear() IF dtnode.numitems() > NIL THEN dtnode.clear() showinfo := TRUE nochanged := TRUE isnitt := FALSE IF dobj := GetDiskObject(projname) oldtooltypes := dobj.tooltypes IF oldtooltypes mem := NIL WHILE oldtooltypes[mem] <> NIL StrCopy(tmp,oldtooltypes[mem]) #ifdef DEBUG StringF(str,'TT -> \s\n',tmp) status(str) #endif b := Val(tmp,NIL) -> NewIcons IF InStr(tmp,'IM1=',0) > -1 isnitt := TRUE a := newicon.add(tmp) ELSEIF InStr(tmp,'IM2=',0) > -1 isnitt := TRUE a := newicon.add(tmp) ELSEIF InStr(tmp,'EDIT THE FOLLOWING LINES',0) > -1 isnitt := TRUE a := newicon.add(tmp) ELSEIF InStr(tmp,'DEFAULTIMAGE',0) > -1 isnitt := TRUE a := newicon.add(tmp) ELSEIF b > NIL a := fidnode.add(tmp) ELSEIF (InStr(tmp,'DEF') > -1) AND (InStr(tmp,'DEF') < 3) a := defnode.add(tmp) ELSEIF (InStr(tmp,'SHOWINFO') > -1) AND (InStr(tmp,'SHOWINFO') < 3) IF (InStr(tmp,'SHOWINFO=NO') = 1) showinfo := FALSE ELSE showinfo := TRUE ENDIF ELSEIF StrCmp(tmp,'.',1) a := extnode.add(tmp) ELSEIF (InStr(tmp,'.') > -1) AND (InStr(tmp,'.') < 10) a := extnode.add(tmp) ELSE a := dtnode.add(tmp) ENDIF mem++ ENDWHILE ENDIF FreeDiskObject(dobj) ENDIF IF gh men_info() gad_del(FALSE,actgui,FALSE) nochanged := TRUE set_save() ENDIF ENDPROC PROC getfileidlist() DEF maxid, id, a IF fidtemp.numitems() <> NIL THEN fidtemp.clear() maxid := FiGetHighID() FOR id := 1 TO maxid - 1 filename := FiGetIDString(id) a := fidsel.add(filename) StringF(cmdstr,'Reading... \z\r\d[3] -> \s',id,filename) settext(gh,txtgad1,cmdstr) StringF(cmdstr,'\z\r\d[3]=\s',id,filename) a := fidtemp.add(cmdstr) ENDFOR settext(gh,txtgad1,'') fidsel.sort() StrCopy(filename,NIL) ENDPROC PROC show_idstr() DEF tmp[40] : STRING, id #ifdef DEBUG status('procka show_idstr\n') #endif id := Val(cmdstr,NIL) IF id = NIL MidStr(tmp,cmdstr,1,5) id := Val(tmp,NIL) StrCopy(tmp,'') ENDIF tmp := FiGetIDString(id) settext(gh,txtgad1,tmp) ENDPROC PROC show_defstr() DEF tmp[40] : STRING, id id := InStr(cmdstr,'=') MidStr(tmp,cmdstr,0,id) IF InStr(tmp,'DEFAULT3') <> -1 StrCopy(tmp,'DEFAULT tool for OS 3.0+') ELSEIF InStr(tmp,'DEFAULT') <> -1 StrCopy(tmp,'DEFAULT tool for OS 2.0+') ELSEIF InStr(tmp,'DEF_EXE') <> -1 StrCopy(tmp,'DEFAULT tool for executable files') ELSEIF InStr(tmp,'DEF_TEXT')<> -1 StrCopy(tmp,'DEFAULT tool for text files') ELSEIF InStr(tmp,'DEF_PACK') <> -1 StrCopy(tmp,'DEFAULT tool for packed files') ELSEIF InStr(tmp,'DEF_ENCRYPT') <> -1 StrCopy(tmp,'DEFAULT tool for crypted files') ELSEIF InStr(tmp,'DEF_IFF') <> -1 StrCopy(tmp,'DEFAULT tool for IFF files') ELSEIF InStr(tmp,'DEF_SCRIPT') <> -1 StrCopy(tmp,'DEFAULT tool for scripts') ELSEIF InStr(tmp,'DEF_GFX') <> -1 StrCopy(tmp,'DEFAULT tool for graphics files') ELSEIF InStr(tmp,'DEF_MUSIC') <> -1 StrCopy(tmp,'DEFAULT tool for music files') ELSEIF InStr(tmp,'SHOWINFO') <> -1 StrCopy(tmp,'Show file information switch (YES/NO)') ELSE StrCopy(tmp,'') StrCopy(cmdstr,'') ENDIF settext(gh,txtgad3,tmp) ENDPROC PROC wstawtext(text,node : PTR TO stringnode,dc : PTR TO dclistview,savegad) DEF tmp[256] : STRING, pos #ifdef DEBUG status('procka wstawtext\n') status(text) #endif node.item(dc.get(DCLV_CURRENT)) pos := InStr(node.obj(),'=') MidStr(tmp,node.obj(),0,pos) StringF(cmdstr,'\s=\s',tmp,text) node.change(cmdstr) gad_delete(savegad,node,dc,FALSE) ENDPROC PROC file_req(filename) DEF file, suc, path[256] : STRING blockwin(gh) IF aslbase file := FilePart(filename) suc := InStr(filename,file) StrCopy(path,filename,suc) IF AslRequest(req,[ASLFR_INITIALFILE,file, ASLFR_INITIALDRAWER,path] ) StrCopy(filename,req.drawer,ALL) AddPart(filename,req.file,256) ELSE unblockwin(gh) RETURN FALSE ENDIF ENDIF unblockwin(gh) ENDPROC filename PROC men_open() DEF ok blockwin(gh) IF nochanged = FALSE ok := EasyRequestArgs(NIL,[20,NIL,'MultiView Preferences','Changes not saved.','Open|Save ^ Open|Cancel'],NIL,NIL) SELECT ok CASE 2 gad_save() CASE 0 RETURN ENDSELECT ENDIF filename := file_req(iconname) IF filename StrCopy(iconname,filename) IF InStr(iconname,'.info',0) = (StrLen(iconname) - 5) THEN cutext(iconname) geticon(iconname) ENDIF unblockwin(gh) ENDPROC PROC men_saveas() #ifdef DEBUG status('SaveAs selected...\n') StringF(str,'IconName -> \s\n',iconname) status(str) #endif filename := file_req(iconname) blockwin(gh) IF filename StrCopy(iconname,filename) IF InStr(iconname,'.info',0) = (StrLen(iconname) - 5) THEN cutext(iconname) gad_save() ENDIF unblockwin(gh) ENDPROC PROC men_info() IF showinfo showinfo := FALSE changemenus(gh,[NM_TITLE,0,'Project', 0 ,0,0,0, NM_ITEM, 0,'Open...', 'o',aslok,0,{men_open}, NM_ITEM, 0,'Save', 's',0,0,{gad_save}, NM_ITEM, 0,'Save As...','S',aslok,0,{men_saveas}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'About', '?',0,0,{about}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Quit', 'q',0,0,{gad_quit}, NM_TITLE,0,'Settings', 0 ,0,0,0, NM_ITEM, 0,'Show Info', 'i',CHECKIT,0,{men_info}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Sort lists','t',0,0,{men_sort}, NM_END, 0,0, 0,0,0,0]:newmenu) ELSE showinfo := TRUE changemenus(gh,[NM_TITLE,0,'Project', 0 ,0,0,0, NM_ITEM, 0,'Open...', 'o',aslok,0,{men_open}, NM_ITEM, 0,'Save', 's',0,0,{gad_save}, NM_ITEM, 0,'Save As...','S',aslok,0,{men_saveas}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'About', '?',0,0,{about}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Quit', 'q',0,0,{gad_quit}, NM_TITLE,0,'Settings', 0 ,0,0,0, NM_ITEM, 0,'Show Info', 'i',CHECKIT + CHECKED,0,{men_info}, NM_ITEM, 0,NM_BARLABEL, 0 ,0,0,0, NM_ITEM, 0,'Sort lists','t',0,0,{men_sort}, NM_END, 0,0, 0,0,0,0]:newmenu) ENDIF nochanged := FALSE set_save() ENDPROC PROC men_sort() blockwin(gh) sort_nodes() nochanged := FALSE set_save() nodel() unblockwin(gh) ENDPROC PROC cutext(filename) DEF temp[256] : STRING, pos temp[NIL] := NIL pos := StrLen(filename) - 1 WHILE filename[pos] <> "." pos-- ENDWHILE MidStr(temp,filename,NIL,pos) filename[NIL] := NIL StringF(filename,temp) ENDPROC PROC nodel() #ifdef DEBUG WriteF('procka nodel\n') #endif IF gh SELECT actgui CASE PAGE_FILEID setstr(gh,strgad1,'') settext(gh,txtgad1,'') setdisabled(gh,delgad1,TRUE) setdisabled(gh,strgad1,TRUE) setdisabled(gh,datgad1,TRUE) setdisabled(gh,getgad1,TRUE) fidlist.set(DCLV_LIST,fidnode.addr()) fidlist.set(DCLV_TOP,current) fidlist.set(DCLV_CURRENT,current) CASE PAGE_EXT setstr(gh,strgad2,'') setdisabled(gh,delgad2,TRUE) setdisabled(gh,strgad2,TRUE) setdisabled(gh,datgad2,TRUE) setdisabled(gh,getgad2,TRUE) extlist.set(DCLV_LIST,extnode.addr()) extlist.set(DCLV_TOP,current) extlist.set(DCLV_CURRENT,current) CASE PAGE_DEF setstr(gh,strgad3,'') settext(gh,txtgad3,'') setdisabled(gh,delgad3,TRUE) setdisabled(gh,strgad3,TRUE) setdisabled(gh,datgad3,TRUE) setdisabled(gh,getgad3,TRUE) deflist.set(DCLV_LIST,defnode.addr()) deflist.set(DCLV_TOP,current) deflist.set(DCLV_CURRENT,current) CASE PAGE_DT setstr(gh,strgad4,'') setdisabled(gh,delgad4,TRUE) setdisabled(gh,strgad4,TRUE) setdisabled(gh,datgad4,TRUE) setdisabled(gh,getgad4,TRUE) dtlist.set(DCLV_LIST,dtnode.addr()) dtlist.set(DCLV_TOP,current) dtlist.set(DCLV_CURRENT,current) ENDSELECT StrCopy(cmdstr,'') ENDIF ENDPROC PROC clicked() DEF tmp[256] : STRING IF InStr(cmdstr,'(',NIL) > -1 IF InStr(cmdstr,')',StrLen(cmdstr)-1) > -1 MidStr(tmp,cmdstr,1,StrLen(cmdstr)-2) ENDIF ELSE StringF(tmp,'(\s)',cmdstr) ENDIF nochanged := FALSE SELECT actgui CASE PAGE_FILEID fidnode.change(tmp) setdisabled(gh,savgad1,FALSE) fidlist.set(DCLV_LIST,fidnode.addr()) CASE PAGE_EXT extnode.change(tmp) setdisabled(gh,savgad2,FALSE) extlist.set(DCLV_LIST,extnode.addr()) CASE PAGE_DEF defnode.change(tmp) setdisabled(gh,savgad3,FALSE) deflist.set(DCLV_LIST,defnode.addr()) CASE PAGE_DT dtnode.change(tmp) setdisabled(gh,savgad4,FALSE) dtlist.set(DCLV_LIST,dtnode.addr()) ENDSELECT ENDPROC PROC set_save() SELECT actgui CASE PAGE_FILEID setdisabled(gh,savgad1,nochanged) CASE PAGE_EXT setdisabled(gh,savgad2,nochanged) CASE PAGE_DEF setdisabled(gh,savgad3,nochanged) CASE PAGE_DT setdisabled(gh,savgad4,nochanged) ENDSELECT ENDPROC PROC sort_nodes() fidnode.sort(FALSE,FALSE) extnode.sort(FALSE,FALSE) defnode.sort(FALSE,FALSE) dtnode.sort() ENDPROC PROC key_left() IF actgui > 0 THEN changepage(actgui - 1) ENDPROC PROC key_right() IF actgui < 3 THEN changepage(actgui + 1) ENDPROC PROC changepage(page) current := -1 reg.set(PLA_Register_ActivePage,page) changegui(gh,guilist[page]) actgui := page nodel() IF aslok = 16 SELECT actgui CASE PAGE_FILEID setdisabled(gh,getgad1,TRUE) CASE PAGE_EXT setdisabled(gh,getgad2,TRUE) CASE PAGE_DEF setdisabled(gh,getgad3,TRUE) CASE PAGE_DT setdisabled(gh,getgad4,TRUE) ENDSELECT ENDIF set_save() ENDPROC #ifdef DEBUG PROC status(text) WriteF('MV Status : \s',text) ENDPROC #endif